/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.ebc.icontatos.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;

import br.com.ebc.icontatos.enumeration.Status;

/**
 *
 * @author linux
 */
@Entity
public class MensagemUsuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long idMensagemUsuario;

    private String motivoContato;

    private String assunto;

    private String descricaoMensagem;

    private Status estadoMensagem;

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataCadastroMensagemUsuario;

    @ManyToOne(cascade=CascadeType.MERGE)
    private Usuario usuario;

    @ManyToOne(cascade=CascadeType.MERGE)
    private Emissora emissora;

	public MensagemUsuario() {
	}

	public Long getIdMensagemUsuario() {
		return idMensagemUsuario;
	}

	public void setIdMensagemUsuario(Long idMensagemUsuario) {
		this.idMensagemUsuario = idMensagemUsuario;
	}

	public String getMotivoContato() {
		return motivoContato;
	}

	public void setMotivoContato(String motivoContato) {
		this.motivoContato = motivoContato;
	}

	public String getAssunto() {
		return assunto;
	}

	public void setAssunto(String assunto) {
		this.assunto = assunto;
	}

	public String getDescricaoMensagem() {
		return descricaoMensagem;
	}

	public void setDescricaoMensagem(String descricaoMensagem) {
		this.descricaoMensagem = descricaoMensagem;
	}

	public Status getEstadoMensagem() {
		return estadoMensagem;
	}

	public void setEstadoMensagem(Status estadoMensagem) {
		this.estadoMensagem = estadoMensagem;
	}

	public Date getDataCadastroMensagemUsuario() {
		return dataCadastroMensagemUsuario;
	}

	public void setDataCadastroMensagemUsuario(Date dataCadastroMensagemUsuario) {
		this.dataCadastroMensagemUsuario = dataCadastroMensagemUsuario;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Emissora getEmissora() {
		return emissora;
	}

	public void setEmissora(Emissora emissora) {
		this.emissora = emissora;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((assunto == null) ? 0 : assunto.hashCode());
		result = prime
				* result
				+ ((dataCadastroMensagemUsuario == null) ? 0
						: dataCadastroMensagemUsuario.hashCode());
		result = prime
				* result
				+ ((descricaoMensagem == null) ? 0 : descricaoMensagem
						.hashCode());
		result = prime * result
				+ ((emissora == null) ? 0 : emissora.hashCode());
		result = prime * result
				+ ((estadoMensagem == null) ? 0 : estadoMensagem.hashCode());
		result = prime
				* result
				+ ((idMensagemUsuario == null) ? 0 : idMensagemUsuario
						.hashCode());
		result = prime * result
				+ ((motivoContato == null) ? 0 : motivoContato.hashCode());
		result = prime * result + ((usuario == null) ? 0 : usuario.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		MensagemUsuario other = (MensagemUsuario) obj;
		if (assunto == null) {
			if (other.assunto != null)
				return false;
		} else if (!assunto.equals(other.assunto))
			return false;
		if (dataCadastroMensagemUsuario == null) {
			if (other.dataCadastroMensagemUsuario != null)
				return false;
		} else if (!dataCadastroMensagemUsuario
				.equals(other.dataCadastroMensagemUsuario))
			return false;
		if (descricaoMensagem == null) {
			if (other.descricaoMensagem != null)
				return false;
		} else if (!descricaoMensagem.equals(other.descricaoMensagem))
			return false;
		if (emissora == null) {
			if (other.emissora != null)
				return false;
		} else if (!emissora.equals(other.emissora))
			return false;
		if (estadoMensagem != other.estadoMensagem)
			return false;
		if (idMensagemUsuario == null) {
			if (other.idMensagemUsuario != null)
				return false;
		} else if (!idMensagemUsuario.equals(other.idMensagemUsuario))
			return false;
		if (motivoContato == null) {
			if (other.motivoContato != null)
				return false;
		} else if (!motivoContato.equals(other.motivoContato))
			return false;
		if (usuario == null) {
			if (other.usuario != null)
				return false;
		} else if (!usuario.equals(other.usuario))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "MensagemUsuario [idMensagemUsuario=" + idMensagemUsuario + "]";
	}
    
}
